//
//  Problem747.swift
//  LeetCode
//
//  Created by 武侠 on 2023/6/21.
//  Copyright © 2023 zhulongiMac02. All rights reserved.
//

import UIKit

/*
 747. 至少是其他数字两倍的最大数 简单
 
 给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 -1 。

 示例 1：
     输入：nums = [3,6,1,0]
     输出：1
     解释：6 是最大的整数，对于数组中的其他整数，6 至少是数组中其他元素的两倍。6 的下标是 1 ，所以返回 1 。
 示例 2：
     输入：nums = [1,2,3,4]
     输出：-1
     解释：4 没有超过 3 的两倍大，所以返回 -1 。
 示例 3：
     输入：nums = [1]
     输出：0
     解释：因为不存在其他数字，所以认为现有数字 1 至少是其他数字的两倍。
  
 提示：
     1 <= nums.length <= 50
     0 <= nums[i] <= 100
     nums 中的最大元素是唯一的
 */
class Problem747: NSObject {
    /*
     思路：只要最大值 > 2 * 第二大的值
     */
    func dominantIndex(_ nums: [Int]) -> Int {
        if nums.count == 0 {
            return -1
        } else if nums.count == 1 {
            return 0
        }
        var max1 = Int.min + 1
        var max2 = Int.min
        var index = -1
        for (i, n) in nums.enumerated() {
            if n > max1 {
                max2 = max1
                max1 = n
                index = i
            } else if n > max2 {
                max2 = n
            }
        }
        return max1 >= 2 * max2 ? index : -1
    }
}
